#!/bin/bash

clang -O2 -fprofile-generate t.c

# 提示用户输入执行 true 分支的次数
echo -n "Enter the number of times to execute true branch: "
read true_count

# 提示用户输入执行 false 分支的次数
echo -n "Enter the number of times to execute false branch: "
read false_count

# 循环执行 true 分支
for (( i=1; i<=true_count; i++ ))
do
    echo "Executing ./a.out for true branch, iteration $i"
    ./a.out 2  # 假设 ./a.out 接受参数 2 表示执行 true 分支
done

# 循环执行 false 分支
for (( i=1; i<=false_count; i++ ))
do
    echo "Executing ./a.out for false branch, iteration $i"
    ./a.out  # 假设 ./a.out 接受参数 3 表示执行 false 分支
done


# 查找当前目录及子目录下所有以 .profraw 结尾的文件，并将结果保存到数组中
profraw_files=( $(find . -type f -name "*.profraw") )

# 检查是否找到了以 .profraw 结尾的文件
if [ ${#profraw_files[@]} -eq 0 ]; then
    echo "没有找到以 .profraw 结尾的文件."
    exit 1
fi

# 循环处理每个找到的 .profraw 文件
for profraw_file in "${profraw_files[@]}"; do
    
    # 执行 llvm-profdata merge 命令
    llvm-profdata merge -output=code.profdata.${true_count}vs${false_count} "$profraw_file"
    
    clang -O2 t.c -fprofile-use=code.profdata.${true_count}vs${false_count} -S -o t${true_count}vs${false_count}.s
    clang -O2 t.c -fprofile-use=code.profdata.${true_count}vs${false_count} -S -emit-llvm -o t${true_count}vs${false_count}.ll
    
    # 输出执行信息
    echo "已处理文件: $profraw_file"
    echo "生成的 code.profdata.${true_count}vs${false_count} ${true_count}vs${false_count}.ll ${true_count}vs${false_count}.s"
    rm -rf "$profraw_file"
done


echo "Execution complete."
